scrolledwindow: Remove child before destroying self
authorBenjamin Otte <otte@redhat.com>
Mon, 9 May 2016 22:59:19 +0000 (00:59 +0200)
committerBenjamin Otte <otte@redhat.com>
Mon, 9 May 2016 23:00:41 +0000 (01:00 +0200)
Children tend to call back into the scrolled window while being removed
and that doesn't work too well if the scrolled window is destroyed
already as Christian Hergert found out.

gtk/gtkscrolledwindow.c

index d85ecbbf0958d74cd48c74e5f05d0f9b881cd74d..e4927e75f7890936975962563744d61d3846980a 100644 (file)
@@ -2673,6 +2673,11 @@ gtk_scrolled_window_destroy (GtkWidget *widget)
 {
   GtkScrolledWindow *scrolled_window = GTK_SCROLLED_WINDOW (widget);
   GtkScrolledWindowPrivate *priv = scrolled_window->priv;
+  GtkWidget *child;
+
+  child = gtk_bin_get_child (GTK_BIN (widget));
+  if (child)
+    gtk_container_remove (GTK_CONTAINER (widget), child);
 
   remove_indicator (scrolled_window, &priv->hindicator);
   remove_indicator (scrolled_window, &priv->vindicator);